home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD 2.1 / Amiga Developer CD v2.1.iso / Reference / DevCon / Atlanta_1990 / Atlanta-Devcon.3 / Debug / README < prev   
Encoding:
Text File  |  1992-08-26  |  13.4 KB  |  415 lines

  1.  
  2.             Debugging Tools 1990
  3.  
  4. Here are some quick descriptions and credits for the tools on this disk.
  5. Including some great tools which were not available in time to be described
  6. in the devcon notes (such as eatmem, mks_lens, and lvo).
  7.  
  8.  
  9. Most CLI tools provide usage if called with "?".  Some of the more complex
  10. tools (Wack and Wedge) are fully documented in the manual of the older
  11. Software Toolkit (a CATS support item).  Many of the tools on this disk are
  12. updated and enhanced versions in preparation for Software Toolkit II.
  13.  
  14.  
  15. If you are planning on releasing software to the public, be sure to test
  16. with the various watchdog tools first!    Memmung and io_torture work on any
  17. system.  If you have an MMU and are running V1.3, use _Enforcer_.  If you
  18. are running 2.0, chose between _Enforcer_, or CPU trap.  If running an
  19. A3000, use complainer.
  20.  
  21.  
  22.  
  23.  
  24. autodoc
  25.  
  26.    Extracts autodocs from your source code, with docs on how to code your
  27.    comments to make this possible.  See autodoc.doc for usage.
  28.  
  29.  
  30. bumprev
  31.  
  32.    Bumps the revision in an xxx_rev.h or .i file.
  33.    Usage: bumprev version revfilename    (example bumprev 36 my_rev)
  34.  
  35.  
  36. charset
  37.  
  38.    Printf's a table of the Amiga character set (ECMA-94 Latin 1 International
  39.    8-bit character set) with hex and binary upper/lower nibble values.
  40.  
  41.  
  42. complainer and complainer.par (by Bryce Nesbitt)
  43.  
  44.    A3000 MMU watchdog.    Use in conjunction with MemMung to catch use of
  45.    freed or uninitialized memory, and writes to ROM or non-existant memory.
  46.    Requires serial terminal.
  47.    Usage: complainer[.par] on|off
  48.  
  49.  
  50. cputrap and cputrap.par (by Valentin Pepelea)
  51.  
  52.    A2500 MMU watchdog traps for use with the 2.0 CPU command.
  53.    Catches illegal memory accesses, low memory reads/writes, writes
  54.    to ROM, etc.  Use in conjunction with MemMung to also catch use of
  55.    freed memory of pointers. Requires 2.0, MMU, CPU command, and serial
  56.    terminal (cputrap) or parallel printer (cputrap.par).
  57.    Usage: run cputrap[.par]
  58.       CPU trap
  59.  
  60.  
  61. config (by Carolyn Scheppner)
  62.  
  63.    Displays your system configuration ( versions, chips, boards, etc.) With
  64.    "debug" option it lists all of the autoconfig info for each board.
  65.  
  66.    Usage: config [debug]
  67.  
  68.  
  69. configdev (by Bryce Nesbitt)
  70.  
  71.    Lists every last detail about every AutoConfig (tm) device in the
  72.    system. Knows about Zorro III cards.
  73.  
  74.    Usage: configdev [brief]
  75.  
  76.  
  77. crash3, crash4, crash5, crash8, crasha (by C. Scheppner)
  78.  
  79.    Little programs to crash your machine (just what you need :-)
  80.    They are useful when testing debugging tools like SRT and TNT.
  81.    They are non-destructive - they just crash the shell process you call
  82.    them from.  They store recognizable values in most registers before
  83.    they crash (like d0=0 thru d7=7, a0=10 thru a6=16 EXCEPT a2=program
  84.    counter and a3=stack pointer) so you can tell if your debugging tool
  85.    is picking up the right info.
  86.  
  87.  
  88. devlist (by Carolyn Scheppner)
  89.  
  90.    Lists all currently loaded/available devices in the system.
  91.  
  92.  
  93. devmon (by Carolyn Scheppner)
  94.  
  95.    Exec device monitor.  Wedges into Open/Close/Expunge/BeginIO vectors
  96.    of any exec device unit and reports on all calls.  With "full" option,
  97.    the exec functions DoIO, SendIO, WaitIO, AbortIO, and ReplyMsg are
  98.    also wedged.  Default output option buffers 40K of debug output
  99.    then outputs to your choice of screen or file when you exit.
  100.    (Local buffer can be restarted at any time).  With "remote" option,
  101.    output is kprintf'd.  Warning - I don't suggest using remote option
  102.    for heavy-use or time-critical devices like timer.device (too slow).
  103.  
  104.  
  105. disked
  106.  
  107.    Sector editor documented in Bantam AmigaDOS manual.    See the toolkit
  108.    documentation for an example.
  109.  
  110.  
  111. doslist (by Andy Finkel)
  112.  
  113.    Lists all of your dos device and volume environment information.
  114.    This version has a larger buffer for folks with lots of devices.
  115.  
  116.  
  117. drip
  118.  
  119.    A classic memory loss tool.
  120.    Usage: drip [threshold]
  121.    Call it again to check for memory loss.
  122.  
  123.  
  124. eatcycles (by John Szucs)
  125.  
  126.    Requires 2.0.  Lets you bog down the processor to simulate heavy
  127.    multitasking loads.
  128.  
  129.  
  130. eatmem (by John Szucs)
  131.  
  132.    Requires 2.0.  Great gadtools-interface memory control panel.
  133.    Lets you dynamically adjust the amount of free memory available for
  134.    testing under low memory situations, or to simulate a machine with
  135.    less memory.
  136.  
  137.  
  138. enforcer and enforcer.par (by Bryce Nesbitt)
  139.  
  140.    MMU watchdog.  Works under 2.0 and 1.3.  Catches illegal memory
  141.    accesses, low memory reads/writes, writes to ROM, areas of no memory,
  142.    etc.
  143.  
  144.    Use with MemMung to also catch use of freed memory or pointer. Requires
  145.    MMU and serial terminal.
  146.  
  147.    Usage: enforcer on|off|fprotect
  148.  
  149.  
  150. flush (by Carolyn Scheppner)
  151.  
  152.    Does three big memory allocations to force currently unopened
  153.    ram-resident fonts, libraries, and devices out of the system. (3 allocs
  154.    so that libs/devs that have other libs/devs open... can be flushed,
  155.    followed by the libs/devs THEY had open, etc...) Used when testing for
  156.    memory loss.  (flush, avail, run your program, exit program, flush,
  157.    avail).
  158.  
  159.  
  160. frags
  161.  
  162.    Shows summary of memory fragmentation.
  163.  
  164.  
  165. intlist (from the original by Carl Sassenrath)
  166.  
  167.    System interrupt lister.
  168.  
  169.  
  170. io_torture (by Bryce Nesbitt)
  171.  
  172.    Device IO watchdog - watches for reuse of IORequests before they have
  173.    completed.  Requires serial terminal.
  174.  
  175.  
  176. lawbreaker (by Bryce Nesbitt)
  177.  
  178.    A little program to test your MMU debugging tool and remote setup.  Does
  179.    an read of location $14, and a write to location $C0EDBAE.
  180.  
  181.  
  182. liblist (by Carolyn Scheppner)
  183.  
  184.    Lists all currently loaded/available libraries in the system.
  185.  
  186.  
  187. lvo (by Carolyn Scheppner)
  188.  
  189.    If you have a directory or disk assigned the name FD:, containing
  190.    the FD files, lvo can give you the LVO offset of a function (hex
  191.    and decimal) and the usage line for the function (handy for quick
  192.    checks on function arguments and registers).  Wedgeline option
  193.    generates command lines for Wedge.
  194.    Usage: lvo library [functionname] [wedgeline]
  195.    Example: lvo exec OpenLibrary
  196.  
  197.  
  198. memlist (by Carolyn Scheppner)
  199.  
  200.    Displays all of the system's memory areas and free memory lists.  Can
  201.    be redirected to a disk file.
  202.  
  203.  
  204. memmon (by Carolyn Scheppner)
  205.  
  206.    Simple memory monitor for checking relative memory usage while
  207.    running your program.  Redirect to a disk file for a log.
  208.  
  209.  
  210. memmung (by Bryce Nesbitt)
  211.  
  212.    Freed memory invalidation tool.  Sets address $0, and all Free'd memory
  213.    to a nasty value, designed to cause you big problems if you are using
  214.    null pointers or accessing freed memory.  If used in conjunction with
  215.    an MMU Watchdog tool (enforcer, cputrap, or complainer as appropriate)
  216.    you get informative messages on such accesses (rather than crashes).
  217.    Use by itself if you don't have an MMU but be prepared to crash.
  218.  
  219.    Usage: run memmung
  220.  
  221.  
  222. memwall (by Randell Jesup)
  223.  
  224.    Memwall puts a magic cookie around all memory allocations (or all by
  225.    a particular task) and complains serially when the memory is freed
  226.    if the cookie has been trashed.  And it now has new snoop-compatible
  227.    output for the snoop option for use with snoopstrip.  Warning -
  228.    anything that frees larger allocations in pieces will cause memwall
  229.    to complain and not free the memory (layers does this).
  230.    Requires a serial terminal.
  231.    Usage: memwall [task Name] [fill N] [presize N] [postsize N] [snoop]
  232.  
  233.  
  234. mks_lens (by Mike Sinz)
  235.  
  236.    A magnifying-glass for for screen text and graphics.  Lets you
  237.    examine every pixel easily.    Useful for debugging graphic
  238.    placement and trashing.
  239.  
  240.  
  241. modlist (by Carolyn Scheppner)
  242.  
  243.    Lists all of the resident modules in the system.
  244.  
  245.  
  246. owner (by Mike Sinz)
  247.  
  248.    Searches exec lists trying to find owner of a piece of memory.
  249.    Usage: owner 0xhhhhhh [0xhhhhhh, etc.]
  250.  
  251.  
  252. peek, poke (by Carolyn Scheppner)
  253.  
  254.    Let you peek or poke memory, and compare memory contents against a
  255.    masked or unmasked value.
  256.  
  257.  
  258. printertest (by Bob Burns)
  259.  
  260.    Printer driver test for printer driver writers.
  261.  
  262.  
  263. readpixel (by Carolyn Scheppner)
  264.  
  265.    Tool that lets you click on pixels to find out their pen number and
  266.    x/y position.  Useful for measuring things onscreen or checking their
  267.    positions.  Coordinates are relative to top left corner of screen.
  268.  
  269.  
  270. romwack
  271.  
  272.    Freezes your system and enters the rom-based system serial debugger,
  273.    allowing you to examine your machine's memory remotely.  Same effect
  274.    as calling Debug() from within a program.
  275.    See RomWack docs in the Addison-Wesley Rom Kernel Manual.
  276.  
  277.  
  278. settaskname (by Carolyn Scheppner)
  279.  
  280.    Lets you change the name of a CLI to any same or shorter length name.
  281.    Useful in conjuction with the MemWall [task Name] option.
  282.  
  283.    Usage: settaskname newname
  284.  
  285.  
  286. showgfxbase (by Carolyn Scheppner)
  287.  
  288.    Shows some popular GfxBase variables.
  289.  
  290.  
  291. showlocks ( Copyright Chuck McManis )
  292.  
  293.    Shows the outstanding locks on a volume.
  294.    Usage: showlocks volumename
  295.  
  296.  
  297. snoop (by Carl Sassenrath, modified by R. Jesup and C. Scheppner)
  298.  
  299.    Snoop reports serially on all memory allocations and deallocations.
  300.    You should capture snoop's output in a terminal program's ascii buffer
  301.    abd then run snoopstrip on it to leave just unmatched allocs/frees.
  302.    This version outputs full 32-bit addresses.    Modified to snoop both
  303.    AllocMem/FreeMem, plus AllocVec/FreeVec if run under 2.0.
  304.    NOTE! In order for snoopstrip to be able to match up AllocVec's and
  305.    FreeVec's, I have to lie about the sizes and output the ACTUAL size
  306.    rather than the requested size for these functions (requested size is
  307.    not available on a FreeVec call).  Requires serial terminal.
  308.  
  309.    Usage: snoop
  310.  
  311.  
  312. snoopstrip (by Neil Katin, modified by C. Scheppner)
  313.  
  314.    Snoopstrip is used to strip all matching allocations and frees from
  315.    a captured snoop output file (or from the output of MemWall's snoop
  316.    option).  All unmatched allocs and frees will cause snoopstrip to
  317.    output a "NoAlloc:" or an "UnFreed:" line, specifying the allocation
  318.    and the owning task.  This new version requires the full 32-bit output
  319.    such as produced by the new Snoop and MemWall programs above.
  320.    Snoopstrip no longer throws away lines it does not understand (unless
  321.    used with the "discard" option).  Instead, it will just prepend the
  322.    lines with a "?".  If it thinks it is being fed old-style 24-bit snoop
  323.    output, it will also output a warning.
  324.  
  325.    Usage:  snoopstrip <snoopfile >outfile [discard]
  326.  
  327.  
  328. sparemem (by Carolyn Scheppner)
  329.  
  330.    Lets you reduce free memory TO a certain amount or BY a certain amount.
  331.    (I wrote it before I saw how nice eatmem is).  Still could be useful
  332.    when (for instance) trying to test a bootable disk under lowered
  333.    memory conditions.
  334.    Usage: sparemem c=[-]bytes f=[-]bytes
  335.  
  336.  
  337. srt (by Carolyn Scheppner)
  338. srt.text
  339.  
  340.    Wedges into AutoRequest to trap Software Error requesters and replace
  341.    with a debug requester containing PC, registers, task name, etc.
  342.    Unfortunately, almost all of 2.0 uses EasyRequest() now, so SRT
  343.    is useless for intercepting 2.0 requesters or software errors.
  344.    However, one handy feature under 1.3 is that it can be installed
  345.    after you crash (then click Retry in requester).
  346.    Usage: srt textfile [default is s:srt.text]
  347.    See new "tnt" below for trapping 1.3/2.0 software errors.
  348.  
  349.  
  350. tasklist (by Carolyn Scheppner)
  351.  
  352.    Lists all tasks in the system and their addresses.
  353.  
  354.  
  355. tnt (by Carolyn Scheppner)
  356.  
  357.   (== trap no tasks  or something like that with the same letters...)
  358.  
  359.    New!  Installs (or removes) a special task trap handler for all
  360.    current and future system tasks and processes.  Instead of
  361.    Software Errors, you'll get an SRT-style debugging requester
  362.    showing the name, registers, program counter, and stack pointer
  363.    of the crashed task, process, or command.  Lets you suspend the
  364.    task if you wish.  Works with (or without) Enforcer and CPU.
  365.    However, turn it off before using a trap-based debugger.
  366.    Usage: tnt [off]
  367.  
  368.  
  369. tstat (by Carolyn Scheppner)
  370.  
  371.    I use this a lot.  It displays a whole bunch of information about
  372.    any task, including what its registers, stack pointer, and PC
  373.    were last time it got switched out.    You can give it a CLI number
  374.    or an exec task name.  You can also give it a repeat time in ticks
  375.    (50th's of a second) and it will monitor the task continuously.
  376.    It shows all of the signal states, and Forbid/Disable nest counts,
  377.    stack usage, and highest stack usage.  Very handy for spotting
  378.    unfreed signals, extra/missing Forbids/Disables, stack problems,
  379.    memory drips, etc.  And you can even use it as a poor-man's
  380.    logic state analyzer - you can crudely follow the execution
  381.    of any task or process by watching it's PC.
  382.  
  383.  
  384. wack, wack1.0 (original Wack1.0 by Carl Sassenrath, revision by Eric Cotton)
  385.  
  386.    Simple usage: wack [programname]
  387.    Symbolic debuggers.    See Software Toolkit for docs.
  388.    Or try ?<RET> in Wack.
  389.  
  390.  
  391. watchmem (by Andy Finkel)
  392.  
  393.    Processor based tool for spotting trashing of low memory on systems
  394.    without an MMU.
  395.    Usage: RUN watchemem [ file | window ] opt n [interval] (n==nocorrect)
  396.  
  397.  
  398. wedge (by Carolyn Scheppner)
  399.  
  400.    Lets you wedge into just about any system function.    Call multiple
  401.    times to install several wedges.  Wedge LIST shows currently installed
  402.    wedges.  Wedge KILLALL kills all installed wedges.  Wedge help gives
  403.    help.  Can snoop on just particular tasks/commands, or on all but
  404.    particular tasks/commands.  Use "lvo" with wedgeline option to create
  405.    command lines for wedge.  (redirect lvo to a file, then execute the file).
  406.    Accompanying s/xxx.w files are sample script files (generated by lvo) for
  407.    installing some wedges.
  408.    Type wedge HELP for help.  See Software Toolkit for full docs.
  409.  
  410.  
  411. winlist (by Carolyn Scheppner)
  412.  
  413.    Lists all screens and windows in the system.
  414.  
  415.